//package com.thinksns.sociax.t4.android.video;
//
//import java.io.File;
//import java.util.ArrayList;
//
//import org.json.JSONObject;
//
//import android.content.Context;
//import android.graphics.Bitmap;
//import android.graphics.BitmapFactory;
//import android.graphics.Canvas;
//import android.graphics.Color;
//import android.graphics.Paint;
//import android.graphics.Paint.FontMetrics;
//import android.graphics.Typeface;
//import android.text.TextPaint;
//
//import com.yixia.camera.util.FileUtils;
//import com.yixia.camera.util.StringUtils;
//import com.yixia.videoeditor.adapter.UtilityAdapter;
//import com.thinksns.sociax.android.R;
//
//public class ThemeHelper {
//	/** 秒拍作者 */
//	public static final String THEME_VIDEO_AUTHOR = "theme_author.bmp";
//	/** 秒拍主题公共包 */
//	public static final String THEME_VIDEO_COMMON = "Common";
//	/** 内置MV主题 */
//	public static final String THEME_MUSIC_VIDEO_ASSETS = "MusicVideoAssets";
//	/** 空主题 */
//	public static final String THEME_EMPTY = "Empty";
//	/** 内置滤镜 */
//	public static final String THEME_FILTER_ASSETS = "FilterAssets";
//	/** 内置音乐 */
//	public static final String THEME_MUSIC_ASSETS = "MusicAssets";
//
//	/** 解析通过主题 */
//	public static ArrayList<POThemeSingle> parseTheme(final Context context,
//			File mThemeCacheDir, String type, int orderArrayId) {
//		ArrayList<POThemeSingle> result = new ArrayList<POThemeSingle>();
//		File themeDir = new File(mThemeCacheDir, type);
//		if (FileUtils.checkFile(themeDir)) {
//			int index = 0;
//			File[] files = null;
//
//			if (orderArrayId > 0) {
//				String[] fileNames = context.getResources().getStringArray(
//						orderArrayId);
//				// 初始化
//				if (fileNames != null && fileNames.length > 0) {
//					files = new File[fileNames.length];
//					for (int i = 0, j = fileNames.length; i < j; i++) {
//						files[i] = new File(themeDir, fileNames[i]);
//					}
//				}
//			}
//
//			if (files == null || files.length < 1) {
//				files = themeDir.listFiles();
//			}
//
//			for (File themeFile : files) {
//				POThemeSingle theme = loadThemeJson(mThemeCacheDir, themeFile);
//				if (theme != null) {
//					theme.index = index++;
//					result.add(theme);
//				}
//			}
//		}
//		return result;
//	}
//
//	/** 预处理音乐路径 */
//	public static void prepareMusicPath(File mThemeCacheDir, POThemeSingle theme) {
//		if (theme != null && FileUtils.checkFile(theme.themeFolder)) {
//			prepareMusicPath(mThemeCacheDir, new File(theme.themeFolder), theme);
//		}
//	}
//
//	/** 预处理音乐路径 */
//	public static void prepareMusicPath(File mThemeCacheDir, File themeDir,
//			POThemeSingle theme) {
//		// 音乐
//		if (theme != null && mThemeCacheDir != null && themeDir != null
//				&& StringUtils.isNotEmpty(theme.musicName)) {
//			// MV音效，从当前文件夹拿
//			final String fName = theme.musicName + ".mp3";
//			File audioFile = new File(themeDir, fName);
//			if (audioFile.exists()) {
//				theme.musicPath = audioFile.getPath();
//			} else if (StringUtils.isNotEmpty(theme.category)) {
//				// 从公共的音乐库里面拿
//				String music = FileUtils.concatPath(mThemeCacheDir.getPath(),
//						THEME_MUSIC_ASSETS, theme.category, fName);
//				// Logger.e("[ThemeHelper]loadThemeJson..." + music);
//				if (FileUtils.checkFile(music)) {
//					theme.musicPath = music;
//				}
//			}
//		}
//	}
//
//	/** 根据json加载主题信息 */
//	public static POThemeSingle loadThemeJson(File mThemeCacheDir,
//			File themeFile) {
//		String themeName = themeFile.getName();
//		File jsonFile = new File(themeFile, themeName + ".json");
//		if (jsonFile.exists()) {
//			try {
//				JSONObject jsonObject = new JSONObject(FileUtils.readFile(
//						jsonFile).toString());
//				POThemeSingle theme = new POThemeSingle(jsonObject);
//				// 主题路径
//				theme.themeFolder = themeFile.getPath();
//				// 音乐
//				prepareMusicPath(mThemeCacheDir, themeFile, theme);
//
//				// 图标
//				File iconFile = new File(themeFile, themeName + ".png");
//				if (FileUtils.checkFile(iconFile)) {
//					theme.themeIcon = iconFile.getAbsolutePath();
//				} else {
//					iconFile = new File(themeFile, "icon-" + themeName
//							+ "@2x.png");
//					if (FileUtils.checkFile(iconFile)) {
//						theme.themeIcon = iconFile.getAbsolutePath();
//					}
//				}
//
//				return theme;
//			} catch (Exception ex) {
//				Logger.e(ex);
//			}
//		}
//		return null;
//	}
//
//	/** 预处理主题 */
//	public static File prepareTheme(final Context context, File mThemeCacheDir) {
//		if (context == null) {
//			return null;
//		}
//
//		if (!mThemeCacheDir.exists()) {
//			if (!mThemeCacheDir.mkdirs()) {
//				// ToastUtils.showToast(R.string.theme_sdcard_faild);
//				return null;
//			}
//		}
//
//		// 拷贝片尾、无主题带logo、公共包
//		final String[] assets = { THEME_MUSIC_ASSETS, THEME_EMPTY,
//				THEME_VIDEO_COMMON, THEME_FILTER_ASSETS,
//				THEME_MUSIC_VIDEO_ASSETS };
//		final int[] versions = context.getResources().getIntArray(
//				R.array.theme_version);
//		for (int i = 0, j = assets.length; i < j; i++) {
//			String name = assets[i];
//			File resource = new File(mThemeCacheDir, name);
//			if (resource.exists()) {
//				// 检查更新
//				if (resource.isFile())
//					continue;
//				if (versions[i] > PreferenceUtils.getInt(
//						PreferenceKeys.THEME_CURRENT_VERSION + "_" + name, 0)) {
//					FileUtils.deleteDir(resource);
//				} else if (resource.isDirectory() && resource.list() != null
//						&& resource.list().length > 0) {
//					continue;
//				}
//			}
//			// 需要拷贝
//			if (name.endsWith(".png")) {
//				ResourceUtils.copyToSdcard(context, name,
//						resource.getAbsolutePath());
//			} else {
//				File zip = new File(mThemeCacheDir, name + ".zip");
//				if (ResourceUtils.copyToSdcard(context, zip.getName(),
//						zip.getAbsolutePath())) {
//					try {
//						ZipUtils.UnZipFolder(zip.getAbsolutePath(),
//								mThemeCacheDir.getAbsolutePath());
//						FileUtils.deleteFile(zip);
//						PreferenceUtils.put(
//								PreferenceKeys.THEME_CURRENT_VERSION + "_"
//										+ name, versions[i]);
//					} catch (Exception ex) {
//						// ToastUtils.showToast(R.string.theme_unzip_faild);
//						// return c;
//						continue;
//					}
//				}
//			}
//		}
//
//		File theme = new File(mThemeCacheDir, THEME_MUSIC_VIDEO_ASSETS);
//		if (FileUtils.checkFile(theme)) {
//			return new File(theme, "default");// 所有主题系列内文件夹都是default，再往下才是单个主题
//		}
//		return null;
//	}
//
//	/** 读取音乐列表 */
//	public static ArrayList<POThemeSingle> parseMusic(final Context context,
//			File mThemeCacheDir) {
//		ArrayList<POThemeSingle> result = new ArrayList<POThemeSingle>();
//
//		// 从音乐文件夹读取音乐列表
//		if (mThemeCacheDir != null) {
//			File resource = new File(mThemeCacheDir, THEME_MUSIC_ASSETS);
//			if (FileUtils.checkFile(resource) && resource.listFiles() != null) {
//				for (File dir : resource.listFiles()) {
//					if (dir.isDirectory()) {
//						for (File file : dir.listFiles()) {
//							if (file != null && file.getPath().endsWith(".mp3")) {
//								POThemeSingle music = new POThemeSingle();
//								music.category = dir.getName();
//								music.themeName = file.getName().replace(
//										".mp3", "");
//								music.themeDisplayName = music.themeName
//										.replace("_", " ");
//								music.themeUrl = file.getPath();
//								music.themeFolder = dir.getPath();
//								result.add(music);
//							}
//						}
//					} else if (dir.isFile() && dir.getPath().endsWith(".mp3")) {
//						POThemeSingle music = new POThemeSingle();
//						music.themeName = dir.getName().replace(".mp3", "");
//						music.themeDisplayName = music.themeName.replace("_",
//								" ");
//						music.themeUrl = dir.getPath();
//						music.themeFolder = resource.getPath();
//						result.add(music);
//					}
//				}
//			}
//
//			// 从MV主题文件夹读取音乐列表
//			readThemeMusics(mThemeCacheDir, result, THEME_MUSIC_VIDEO_ASSETS);
//		}
//
//		return result;
//	}
//
//	/** 读取主题音乐 */
//	private static void readThemeMusics(File mThemeCacheDir,
//			ArrayList<POThemeSingle> result, String themeRootDir) {
//		File resource = new File(mThemeCacheDir, themeRootDir);
//		if (FileUtils.checkFile(resource)) {
//			for (File dir : resource.listFiles()) {
//				if (dir != null && dir.isDirectory()) {
//					final String themeName = dir.getName();
//					File jsonFile = new File(dir, themeName + ".json");
//					if (jsonFile != null && jsonFile.exists()) {
//						try {
//							JSONObject jsonObject = new JSONObject(FileUtils
//									.readFile(jsonFile).toString());
//							if (jsonObject != null) {
//								boolean isMP3 = jsonObject.optBoolean("isMP3");
//								String musicName = isMP3 ? jsonObject
//										.optString("themeName") : jsonObject
//										.optString("musicName");
//								String themeDisplayName = jsonObject
//										.optString("themeDisplayName");
//								if (StringUtils.isNotEmpty(musicName)) {
//									String musicCategory = isMP3 ? jsonObject
//											.optString("category") : jsonObject
//											.optString("musicCategory");
//									File file = new File(dir, musicName
//											+ ".mp3");
//									if (FileUtils.checkFile(file)) {
//										POThemeSingle music = new POThemeSingle();
//										music.category = musicCategory;
//										music.themeName = musicName;
//										if (isMP3) {
//											music.themeDisplayName = themeDisplayName;// mp3主题
//										} else {
//											music.themeDisplayName = musicName
//													.replace("_", " ");
//										}
//										// music.themeName =
//										// music.themeDisplayName;
//										music.themeUrl = file.getPath();
//										music.themeFolder = dir.getPath();
//										if (jsonObject.has("musicTitle")) {
//											music.themeDisplayName = jsonObject
//													.optString("musicTitle");
//										}
//										result.add(music);
//									}
//								}
//							}
//						} catch (Exception e) {
//							Logger.e(e);
//						}
//					}
//				}
//			}
//		}
//	}
//
//	/** 生成图片 */
//	public static boolean buildThemeTextPicture(final POThemeSingle theme,
//			final String text, final String targetPath) {
//		if (theme == null || StringUtils.isEmpty(targetPath))
//			return false;
//
//		TextPaint paint = new TextPaint(Paint.ANTI_ALIAS_FLAG);
//		paint.setTypeface(Typeface.SANS_SERIF);
//		paint.setTextSize(theme.textSize);// 设置字体
//		paint.setColor(ConvertToUtils.toColor(theme.textColor, Color.WHITE));
//		// paint.setShadowLayer(2f, 1f, 1f, Color.BLACK);//设置阴影
//
//		// http://mikewang.blog.51cto.com/3826268/871765
//		FontMetrics fm = paint.getFontMetrics();
//		final int bitmapWidth = 480, bitmapHeight = 480;
//		int fontWidth = (int) paint.measureText(text);
//		int fontHeight = (int) (fm.leading + Math.abs(fm.ascent) + fm.descent);// (Math.ceil(fm.descent
//																				// -
//																				// fm.ascent)
//																				// +
//																				// 2);//
//																				// fm.leading多行可以取到这个值
//		Bitmap bitmap = null;
//		try {
//			bitmap = Bitmap.createBitmap(bitmapWidth, bitmapHeight,
//					Bitmap.Config.ARGB_8888);
//			Canvas canvas = new Canvas(bitmap);
//			if (StringUtils.isNotEmpty(theme.textBackground)
//					&& FileUtils.checkFile(new File(theme.themeFolder,
//							theme.textBackground))) {
//				Bitmap background = BitmapFactory.decodeFile(FileUtils
//						.concatPath(theme.themeFolder, theme.textBackground));
//				if (background != null) {
//					if (!background.isRecycled()) {
//						canvas.drawBitmap(background, 0, 0, null);
//						background.recycle();
//					}
//					background = null;
//				}
//			}
//			float x = 0;
//			float y = 0;
//			if ("center_horizontal".equals(theme.textGravity)) {// 水平居中
//				x = (bitmapWidth - fontWidth) / 2;
//				y = theme.textY;
//			} else if ("center".equals(theme.textGravity)) {// 完全居中
//				x = (bitmapWidth - fontWidth) / 2;
//				y = (bitmapWidth - fontHeight) / 2;
//			} else if ("text_center".equals(theme.textGravity)) {// 文字中心点
//				x = theme.textX - (fontWidth / 2);
//				y = theme.textY - (fontHeight / 2);
//			} else {// 坐标控制
//				x = theme.textX;
//				y = theme.textY;
//			}
//			canvas.drawText(text, x,
//					y + (Math.abs(fm.ascent) / 2 + fm.descent), paint);// Math.abs(fm.top)
//																		// +
//			if (AndroidBmpUtil.save(bitmap, targetPath)) {
//				return true;
//			}
//		} catch (Exception e) {
//			Logger.e(e);
//		} finally {
//			if (bitmap != null) {
//				if (!bitmap.isRecycled())
//					bitmap.recycle();
//				bitmap = null;
//			}
//		}
//		return false;
//	}
//
//	/**
//	 * 更新用户拍摄视频logo
//	 * 
//	 * @param force
//	 *            是否重新生成
//	 * @return
//	 */
//	public static String updateVideoAuthorLogo(File mThemeCacheDir,
//			String nickname, boolean force) {
//		if (mThemeCacheDir != null && mThemeCacheDir.exists()) {
//			File saveFile = new File(mThemeCacheDir, THEME_VIDEO_AUTHOR);
//			String oldName = PreferenceUtils.getString(
//					PreferenceKeys.THEME_LOGO_AUTHOR_NAME, nickname);
//			// 如果不需要强制更新那就直接返回
//			if (!force
//					&& saveFile.exists()
//					&& !IsUtils.equals(nickname, oldName)
//					&& PreferenceUtils.getInt(
//							PreferenceKeys.THEME_LOGO_AUTHOR_WIDTH, 0) > 0) {
//				return saveFile.toString();
//			}
//
//			// FileOutputStream out = null;
//			TextPaint paint = new TextPaint(Paint.ANTI_ALIAS_FLAG);
//			paint.setColor(Color.WHITE);
//			paint.setTypeface(Typeface.SANS_SERIF);
//			paint.setTextSize(20);// 设置字体
//			paint.setShadowLayer(2f, 1f, 1f, Color.BLACK);// 设置阴影
//
//			// http://mikewang.blog.51cto.com/3826268/871765
//			FontMetrics fm = paint.getFontMetrics();
//			int width = (int) paint.measureText(nickname);
//			int fontHeight = (int) (Math.ceil(fm.descent - fm.ascent) + 2);// fm.leading多行可以取到这个值
//			int height = 30;
//
//			if (width % 16 != 0)
//				width += width % 16;
//			if (width > 0 && height > 0) {
//				Bitmap bitmap = null;
//				try {
//					bitmap = Bitmap.createBitmap(width, height,
//							Bitmap.Config.ARGB_8888);
//					Canvas canvas = new Canvas(bitmap);
//					canvas.drawText(nickname, 0, Math.abs(fm.top)
//							+ ((height - fontHeight) / 2), paint);
//
//					int[] pixels = new int[width * height];
//					bitmap.getPixels(pixels, 0, width, 0, 0, width, height);
//					if (UtilityAdapter.SaveData(saveFile.toString(), pixels,
//							UtilityAdapter.OUTPUTFORMAT_MASK_ZIP)) {
//						PreferenceUtils.put(
//								PreferenceKeys.THEME_LOGO_AUTHOR_WIDTH, width);
//						PreferenceUtils
//								.put(PreferenceKeys.THEME_LOGO_AUTHOR_HEIGHT,
//										height);
//						return saveFile.toString();
//					}
//
//				} catch (Exception e) {
//					Logger.e(e);
//				} finally {
//					if (bitmap != null) {
//						if (!bitmap.isRecycled())
//							bitmap.recycle();
//						bitmap = null;
//					}
//				}
//			}
//		}
//		return null;
//	}
//}
